home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / UTILITIE / CONVERSI / 0825C.ZIP / CNVRTR.BAS < prev    next >
BASIC Source File  |  1980-01-01  |  6KB  |  121 lines

  1. 10 SCREEN 0,0,0,0:KEY OFF:WIDTH 80:COLOR 7,0:CLS:KEY 1,CHR$(27)+"LIST ":KEY 2,CHR$(27)+"RUN"+CHR$(13)
  2. 20 DIM N(51),B$(50),H(7),H$(7)
  3. 30 FOR X=0 TO 50:N(X+1)=2^X:NEXT
  4. 40 FOR X=0 TO 6:H(X+1)=16^X:NEXT
  5. 50 CLS:LOCATE 2,32:PRINT "You may convert:":LOCATE 4,30:PRINT"a)---Binary to Decimal"
  6. 60 LOCATE 5,30:PRINT"b)---Decimal to Binary":LOCATE 6,30:PRINT"c)---Hexadecimal to Decimal"
  7. 70 LOCATE 7,30:PRINT"d)---Decimal to Hexadecimal":LOCATE 8,30:PRINT"e)---Binary to Hexadecimal":LOCATE 9,30:PRINT"f)---Hexadecimal to Binary":LOCATE 10,30:PRINT"g)---End
  8. 80 X$=INPUT$(1):IF (ASC(X$)<65 OR ASC(X$)>71) AND (ASC(X$)<97 OR ASC(X$)>103) THEN 80
  9. 90 IF X$="A" OR X$="a" THEN 160
  10. 100 IF X$="B" OR X$="b" THEN 270
  11. 110 IF X$="C" OR X$="c" THEN 340
  12. 120 IF X$="D" OR X$="d" THEN 420
  13. 130 IF X$="E" OR X$="e" THEN 490
  14. 140 IF X$="F" OR X$="f" THEN 550
  15. 150 IF X$="G" OR X$="g" THEN CLS:PRINT"Good-by from CNVRTR.":END
  16. 160 CLS:INPUT "What is your binary number (please no spaces between groups)";B$
  17. 170 FOR X=1 TO LEN(B$):X$=MID$(B$,X,1):IF X$="0" OR X$="1" THEN 180 ELSE 190
  18. 180 NEXT :GOTO 210
  19. 190 IF X$=" " THEN E$="<Space>" ELSE E$=X$
  20. 200 BEEP:PRINT"You cannot use "B$" because of the character `"E$"' at position"X".":X$=INPUT$(1):GOTO 160
  21. 210 GOSUB 640
  22. 220 IF IND THEN IND=0:COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
  23. 230 F$="":FOR X=0 TO 18:IF D>10^X THEN 250
  24. 240 FOR Y=1 TO X+4:F$=F$+"#":NEXT :GOTO 260
  25. 250 NEXT X
  26. 260 PRINT"The decimal version of "B$" is ";:PRINT USING F$+",_.";D:LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
  27. 270 CLS:INPUT "What is your decimal number (Please not over 1.1259E+14)";D
  28. 280 IF D>2^50 THEN BEEP:PRINT"I cannot take numbers that big":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT(1):GOTO 270
  29. 290 IF D<0 THEN IND1=1
  30. 300 D1=D
  31. 310 GOSUB 700
  32. 320 PRINT"The Binary version of"D1"is "B$
  33. 330 LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
  34. 340 CLS:INPUT "What is you hexadecimal number (no more than 6 digits)";H$
  35. 350 IF LEN(H$)>6 THEN BEEP:PRINT"I cannot take numbers that big!":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 340
  36. 360 FOR X=1 TO LEN(H$):X$=MID$(H$,X,1):IF (ASC(X$)>47 AND ASC(X$)<58) OR (ASC(X$)>64 AND ASC(X$)<72) OR (ASC(X$)>96 AND ASC(X$)<104) THEN 380 ELSE 370
  37. 370 PRINT"This is not proper hexadecimal notation because of the character `"X$"'":PRINT"at position"X".":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 340
  38. 380 NEXT
  39. 390 GOSUB 800
  40. 400 PRINT"The Decimal value of "H$" is"H1
  41. 410 LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
  42. 420 CLS:INPUT"What is your decimal number (please not over 1677216)";D
  43. 430 IF D>1677216! THEN BEEP:PRINT"I cannot take numbers that big!":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 420
  44. 440 IF D<1 THEN IND1=1
  45. 450 D2=ABS(D):D=ABS(D)
  46. 460 GOSUB 910
  47. 470 PRINT"The hexadecimal version of"D2"is "H$"."
  48. 480 LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
  49. 490 CLS:INPUT "What is your Binary number (please not over twenty places)";B$
  50. 500 IF LEN(B$)>20 THEN PRINT"I cannot take numbers that big!":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 490
  51. 510 GOSUB 640
  52. 520 GOSUB 910
  53. 530 PRINT"The Hexadecimal version of "B$" is "H$"."
  54. 540 LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
  55. 550 CLS:INPUT "What is your hexadecimal number (not over 6 places please)";H$
  56. 560 IF LEN(H$)>6 THEN BEEP:PRINT"I cannot take numbers that big!":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 550
  57. 570 FOR X=1 TO LEN(H$):X$=MID$(H$,X,1):IF (ASC(X$)>47 AND ASC(X$)<58) OR (ASC(X$)>64 AND ASC(X$)<72) OR (ASC(X$)>96 AND ASC(X$)<104) THEN 590 ELSE 580
  58. 580 PRINT"This is not proper hexadecimal notation because of the character `"X$"'":PRINT"at position"X".":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 550
  59. 590 NEXT
  60. 600 GOSUB 800:D=H1
  61. 610 GOSUB 700
  62. 620 PRINT"The Decimal version of "H$" is "B$" in decimal.":
  63. 630 LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
  64. 640 'Binary to Decimal
  65. 650 D=0:X=LEN(B$):IF X>50 THEN BEEP:PRINT"I cannot take numbers that big!":IND=1:RETURN
  66. 660 FOR L=X TO 1 STEP -1:X$=MID$(B$,L,1):IF X$="0" THEN 680
  67. 670 D=D+N(L)
  68. 680 NEXT
  69. 690 RETURN
  70. 700 B$="":FOR X=1 TO 50:IF N(X)<=D THEN 720
  71. 710 X=X-1:GOTO 730
  72. 720 NEXT
  73. 730 FOR X1=X TO 1 STEP -1:IF N(X1)<=D THEN B$=B$+"1":D=D-N(X1):GOTO 750
  74. 740 B$=B$+"0"
  75. 750 NEXT
  76. 760 L=LEN(B$):FOR X=1 TO L:B$(X)=MID$(B$,X,1):NEXT
  77. 770 B$="":IF IND1=1 THEN B$="-":IND1=0
  78. 780 FOR X=L TO 1 STEP -1:B$=B$+B$(X):NEXT
  79. 790 RETURN
  80. 800 H1=0:H=0:FOR X=1 TO LEN(H$):X$=MID$(H$,X,1)
  81. 810 IF ASC(X$)>47 AND ASC(X$)<58 THEN H=VAL(X$):GOTO 880
  82. 820 IF X$="A" OR X$="a" THEN H=10
  83. 830 IF X$="B" OR X$="b" THEN H=11
  84. 840 IF X$="C" OR X$="c" THEN H=12
  85. 850 IF X$="D" OR X$="d" THEN H=13
  86. 860 IF X$="E" OR X$="e" THEN H=14
  87. 870 IF X$="F" OR X$="f" THEN H=15
  88. 880 H1=H1+H*H(LEN(H$)-X+1)
  89. 890 NEXT
  90. 900 RETURN
  91. 910 D=D+1:H$="":IF IND1=1 THEN IND1=0:H$="-"
  92. 920 FOR X=1 TO 6:IF H(X)<=D THEN 940
  93. 930 X=X-1:GOTO 950
  94. 940 NEXT
  95. 950 FOR X1=X TO 1 STEP -1
  96. 960 FOR C=0 TO 15:IF C*H(X1)>=D THEN 980
  97. 970 NEXT C
  98. 980 T=(C-1)*H(X1):DI=C-1
  99. 990 IF DI=0 THEN H$=H$+"0":GOTO 1150
  100. 1000 IF DI=1 THEN H$=H$+"1":GOTO 1150
  101. 1010 IF DI=2 THEN H$=H$+"2":GOTO 1150
  102. 1020 IF DI=3 THEN H$=H$+"3":GOTO 1150
  103. 1030 IF DI=4 THEN H$=H$+"4":GOTO 1150
  104. 1040 IF DI=5 THEN H$=H$+"5":GOTO 1150
  105. 1050 IF DI=6 THEN H$=H$+"6":GOTO 1150
  106. 1060 IF DI=7 THEN H$=H$+"7":GOTO 1150
  107. 1070 IF DI=8 THEN H$=H$+"8":GOTO 1150
  108. 1080 IF DI=9 THEN H$=H$+"9":GOTO 1150
  109. 1090 IF DI=10 THEN H$=H$+"A":GOTO 1150
  110. 1100 IF DI=11 THEN H$=H$+"B":GOTO 1150
  111. 1110 IF DI=12 THEN H$=H$+"C":GOTO 1150
  112. 1120 IF DI=13 THEN H$=H$+"D":GOTO 1150
  113. 1130 IF DI=14 THEN H$=H$+"E":GOTO 1150
  114. 1140 IF DI=15 THEN H$=H$+"F"
  115. 1150 D=D-T:NEXT X1
  116. 1160 RETURN
  117. 1170 L=LEN(B$):FOR X=1 TO L:B$(X)=MID$(B$,X,1):NEXT
  118. 1180 B$="":IF IND1=1 THEN B$="-":IND1=0
  119. 1190 FOR X=L TO 1 STEP -1:B$=B$+B$(X):NEXT
  120. 1200 RETURN
  121.